package com.co.notaweb.facade;

import java.util.List;

import javax.ejb.Local;

import com.co.notaweb.entities.Asignacion;
import com.co.notaweb.entities.Calificacion;
import com.co.notaweb.entities.Colegio;
import com.co.notaweb.entities.Curso;
import com.co.notaweb.entities.Docente;
import com.co.notaweb.entities.Estudiante;
import com.co.notaweb.entities.Logro;
import com.co.notaweb.entities.LogroEvaluado;
import com.co.notaweb.entities.Materia;
import com.co.notaweb.entities.Periodo;
import com.co.notaweb.entities.Persona;
import com.co.notaweb.entities.PersonaGenerica;

/**
 * @author PC
 * @version 1.0
 * @created 13-nov-2011 12:14:25
 */
@Local
public interface IColegioFacadeLocal {

	/**
	 ******************************************************************************************************************** 
	 * PeriodoBussines
	 ******************************************************************************************************************** 
	 */
	Periodo findPeriodo(long l);

	List<Periodo> consultarPeriodosColegio(long colegio);

	/**
	 ******************************************************************************************************************** 
	 * CursoBussines
	 ******************************************************************************************************************** 
	 */

	public List<Curso> consultarCursosPorDocente(long idDocente);

	public List<Curso> consultarCursosPorColegio(long idColegio);

	/**
	 ******************************************************************************************************************** 
	 * CalificacionBussines
	 ******************************************************************************************************************** 
	 */

	void createCalificacion(Calificacion calificacion);

	/**
	 ******************************************************************************************************************** 
	 * LogroEvaluadoBussines
	 ******************************************************************************************************************** 
	 */
	void createLogroEvaluado(LogroEvaluado logroEvaluado);

	/**
	 ******************************************************************************************************************** 
	 * MateriaBusines
	 ******************************************************************************************************************** 
	 */
	List<Materia> consultarMateriasPorCursoDocente(long idCurso, long idDocente);

	public List<Materia> consultarAllMaterias();

	
	
	/**
	 ******************************************************************************************************************** 
	 * PersonaBussines
	 ******************************************************************************************************************** 
	 */
	public void createPersona(Persona persona, long idRol, String tipoPersona);
	
	public List<Persona> consultarAllPersonas();
	
	/**
	 ******************************************************************************************************************** 
	 * EstudianteBussines
	 ******************************************************************************************************************** 
	 */
	List<Estudiante> consultarEstudiantesPorCursoMateriaDocente(long idCurso,
			long idMateria, long idDocente);

	public void createEstudiante(Estudiante estudiante);

	public void editEstudiante(Estudiante estudiante);

	public void deleteEstudiante(Estudiante estudiante);

	public void findEstudiante(long id);

	public List<Estudiante> consultarEstudiantesPorCurso(long idCurso);

	public List<Estudiante> consultarEstudiantesNoAsignadosCurso(
			List<Long> idsEstdiantes);

	public void asignarEstudiantesACurso(List<Long> estudiantesAsignados,
			List<Long> estudiantesDisponibles, long idCurso);

	/**
	 ******************************************************************************************************************** 
	 * LogroBussines
	 ******************************************************************************************************************** 
	 */
	List<Logro> consultarLogrosPorCursoDocenteMateria(long idCurso,
			long idDocente, long idMateria);

	public List<Logro> consultarLogrosPorCursoDocenteMateriaPeriodo(
			long idCurso, long idDocente, long idMateria, long idPeriodo);

	void createLogro(Logro logro, Periodo periodo, Asignacion asignacion);

	/**
	 ******************************************************************************************************************** 
	 * asignacionBussines
	 ******************************************************************************************************************** 
	 */
	public Asignacion consultarAsignacionPorCursoDocenteMateria(long idCurso,
			long idDocente, long idMateria);

	public List<Asignacion> consultarAllAsignacion();

	public void editAsignacion(Asignacion asignacion, long idColegio,
			long idCurso, long idDocente, long idMateria);

	public void createAsignacion(Asignacion asignacion, long idColegio,
			long idCurso, long idDocente, long idMateria);

	public void deleteAsignacion(long idAsignacion);

	/**
	 ******************************************************************************************************************** 
	 * colegioBussines
	 ******************************************************************************************************************** 
	 */

	/**
	 * @param coliegio
	 * @param idColegio
	 */
	public void createColegio(Colegio colegio);

	public void editColegio(Colegio colegio);

	public void deleteColegio(Colegio colegio);

	public void findColegio(long id);

	public List<Colegio> consultarAllColegios();
	public List<Colegio> consultarColegiosByDocente(long idDocente);

	/**
	 ******************************************************************************************************************** 
	 * docenteBussines
	 ******************************************************************************************************************** 
	 */
	public List<Docente> consultarDocentePorColegio(long idColegio);

	public void createDocente(Docente docente);

	public void editDocente(Docente docente);

	public void deleteDocente(Docente docente);

	public void findDocente(long id);

	public List<Docente> consultarDocenteNoAsignadosColegio(
			List<Long> idsDocente);

	public void asignarDocentesAColegio(List<Long> docentesAsignados,
			List<Long> docentesDisponibles, long idColegio);

	/**
	 ******************************************************************************************************************** 
	 * personaGenericaBussines
	 ******************************************************************************************************************** 
	 */

	public void createPersonaGenerica(PersonaGenerica personaGenerica);

	public void editPersonaGenerica(PersonaGenerica personaGenerica);

	public void deletePersonaGenerica(PersonaGenerica personaGenerica);

	public void findPersonaGenerica(long id);


}
